package cn.jtfadmin.base.lang.common.domain.entity;

/**
 * 实体状态监听器, 由真实的orm框架来操作
 * @since 0.0.1
 * @author jtf
 */
public interface EntityListener {


    /**
     * 在持久化之前调用
     *
     * @param object 实体
     */
    default void prePersist(Object object) {
    }

    /**
     * 在更新之前调用
     *
     * @param object 实体
     */
    default void preUpdate(Object object) {
    }

    /**
     * 在删除之前调用
     *
     * @param object 实体
     */
    default void preRemove(Object object) {
    }

    /**
     * 在持久化之后调用
     *
     * @param object 实体
     */
    default void postPersist(Object object) {
    }

    /**
     * 在更新之后调用
     *
     * @param object 实体
     */
    default void postUpdate(Object object) {
    }

    /**
     * 在删除之后调用
     *
     * @param object 实体
     */
    default void postRemove(Object object) {
    }

    /**
     * 在查询之后调用
     *
     * @param object 实体
     */
    default void postLoad(Object object) {
    }
}
